//
//  Kylin_TagViewController.m
//  03-BuDeJie-2 TabBar设置
//
//  Created by Kylin on 16/2/4.
//  Copyright © 2016年 kylin. All rights reserved.
//

#import "Kylin_TagViewController.h"
#import "Kylin_TableViewCell.h"
#import <AFNetworking.h>
#import <MJExtension.h>
#import "Kylin_tagsModel.h"
#import <SVProgressHUD.h>


@interface Kylin_TagViewController ()
/**<#descrption#>*/
@property(nonatomic,strong)NSArray *tags;
/**网络请求管理者*/
@property(nonatomic,weak)AFHTTPSessionManager *manager;
@end

@implementation Kylin_TagViewController

// cell循环利用标标
static NSString * const Kylin_CellID = @"tag";

// 懒加载
-(AFHTTPSessionManager *)manager{
    
    if (_manager == nil) {
        _manager = [AFHTTPSessionManager manager];
    }
    return _manager;
}

#pragma mark- 设VIEW的显示内容
- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.navigationItem.title = @"精华标签";
   
    [self setUpTable];
    
    [self loadTag];
    
}

- (void)setUpTable{
    self.view.backgroundColor = Kylin_CommonBgColor;
    
    // 设置行高
    self.tableView.rowHeight = 70;
    
    //去掉系统自带的分割线
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    
    // 注册CELL
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([Kylin_TableViewCell class]) bundle:nil] forCellReuseIdentifier:Kylin_CellID];
    
    
}


#pragma mark- 请求服务器数据进行字典转模型
- (void)loadTag{
   
    
    [SVProgressHUD show];
    
    
    // 请求参数
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"a"] = @"tag_recommend";
    params[@"action"] = @"sub";
    params[@"c"] = @"topic";
    
    
    // 使用BLOCK时使用弱引用,防止强引用后不能销毁控制器
    Kylin_WeakSelf
    // 发送请求
    [weakSelf.manager GET:Kylin_RequestURL parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
        // 一般情况下,不会返回空的数据,但也可进行判断一下
        if (responseObject == nil) {
            [SVProgressHUD showErrorWithStatus:@"加载失败"];
            
            return ;
        }
        // 字典转模型
        weakSelf.tags = [Kylin_tagsModel mj_objectArrayWithKeyValuesArray:responseObject];
        
        [weakSelf.tableView reloadData];
        
        
        // 关闭弹窗 数据请求成功后
        [SVProgressHUD dismiss];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        
        // 如果不是请求失败,是取消了任务,就直接返回
        if (error.code == NSURLErrorCancelled)return ;
        
        if (error.code == NSURLErrorTimedOut){
            // 关闭弹框
            [SVProgressHUD showErrorWithStatus:@"加载标签数据超时，请稍后再试！"];
        } else {
            // 关闭弹框
            [SVProgressHUD showErrorWithStatus:@"加载标签数据失败"];
        }
      
        
    }];
}

- (void)dealloc{
    
    // 直接关闭AFN管理对象,所有任务取消
    [self.manager invalidateSessionCancelingTasks:YES];
    
    
    // 调用对象方法,取消任务
    [self.manager.tasks makeObjectsPerformSelector:@selector(cancel)];
    
    // 关闭请求
    [SVProgressHUD dismiss];
  
}
#pragma mark-  当只有一组的时侯可以省略
// tableView 有多少组
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    return 1;
}

// 每一组有多少行
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   return  20;
}


// 每一行显示的内容是什么
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    Kylin_TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Kylin_CellID];
    
    cell.tagModel =  self.tags[indexPath.row];
    
    return cell;
}



@end
